]> dgit.raspbian.org Git - rustc.git/commit
archive: Prevent symlink-directory collision chmod attack (#442)
authorAlex Crichton <alex@alexcrichton.com>
Thu, 19 Mar 2026 21:58:05 +0000 (16:58 -0500)
committerFabian Grünbichler <debian@fabian.gruenbichler.email>
Fri, 24 Jul 2026 16:02:33 +0000 (18:02 +0200)
commit93dbfc6db3625807d0b3e7b2af3e6729be8bedc6
tree7bf509164243484a18d4b2cc7ae21472c8d600fe
parent1c6f50334cc95d6f11eca5b9d0aa66fd71b59924
archive: Prevent symlink-directory collision chmod attack (#442)

When unpacking a tarball containing a symlink followed by a directory
entry with the same path, unpack_dir previously used fs::metadata()
which follows symlinks. This allowed an attacker to modify permissions
on arbitrary directories outside the extraction path.

The fix uses fs::symlink_metadata() to detect symlinks and refuse to
treat them as valid existing directories.

Document more exhaustively+consistently security caveats.

Reported-by: Sergei Zimmerman <https://github.com/xokdvium>
Assisted-by: OpenCode (Claude claude-opus-4-5)
Signed-off-by: Colin Walters <walters@verbum.org>
Co-authored-by: Colin Walters <walters@verbum.org>
FG: drop test-related changes, adapt version
Signed-off-by: Fabian Grünbichler <debian@fabian.gruenbichler.email>
Fixes: CVE-2026-33056
Gbp-Pq: Topic vendor
Gbp-Pq: Name tar-CVE-2026-33056.patch
vendor/tar-0.4.43/src/archive.rs
vendor/tar-0.4.43/src/entry.rs